Compilatore con ottimizzatore

Il compilatore con ottimizzatore o compilatore ottimizzante è un compilatore che effettua automaticamente l'ottimizzazione di un programma durante il processo di compilazione. Considerando un'architettura a tre stadi di un compilatore, come quella di LLVM, ciò implica che negli stadi middle-end e/o back-end vengono effettuati passaggi atti a migliorare il codice compilato prodotto. Nel caso di un'architettura a due stadi (solo front-end e back-end) le ottimizzazioni vengono considerate parte del back-end.[1]

Schema a tre stadi di un compilatore. Le ottimizzazioni target-independent vengono effettuate nel middle-end, quelle target-dependent nel back-end.

Effettuare ottimizzazioni durante la compilazione di un programma è importante al fine di sopperire alle inefficienze derivanti dalla traduzione di costrutti di alto livello in rappresentazione intermedia o in codice macchina (lowering). Queste inefficienze possono essere semplici ridondanze nel codice, oppure caratteristiche più profonde che riducono la parallelizzabilità del programma o altre caratteristiche di efficienza.[2]

  1. ^ Aho, Lam, Sethi, Ullman, p. 5.
  2. ^ (EN) Monica S. Lam, "Advanced Compilers Course Introduction" (PDF), su suif.stanford.edu. URL consultato il 25 giugno 2020 (archiviato dall'url originale il 12 febbraio 2020).

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search